
package Utils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import org.primefaces.model.StreamedContent;
import org.primefaces.model.UploadedFile;


public class UploadImport implements Serializable{ 
    private UploadedFile uploadedFile;
    private StreamedContent file;    
    public UploadedFile getUploadedFile() {
        return uploadedFile;
    }

    public void setUploadedFile(UploadedFile uploadedFile) {
        this.uploadedFile = uploadedFile;
    }

    public StreamedContent getFile() {
        return file;
    }

    
    public void setFile(StreamedContent file) {
        this.file = file;
    }

    public UploadImport() {
    }
    public static String doRuta(){
          
        String archivo =((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getRealPath("/");
        return  archivo;
    }
    
    public static String aDocumento(String ini, String ext){
      FacesContext fCtx = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) fCtx.getExternalContext().getSession(false);
        String sessionId = session.getId();
    //    String folder= System.getProperty("file.separator")+carpeta+ System.getProperty("file.separator");
        //String archivo_ =((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getRealPath("/")+folder+              
        return  ini+sessionId+"."+ext;    
    }
    
    public static String subirDocumento(String content_type,
            UploadedFile upload_file, String carpeta, String  opcion){
        String ext=null; 
        String rutaRegistros=null; 
        boolean a=false;         
        FacesContext fCtx = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) fCtx.getExternalContext().getSession(false);
        String sessionId = session.getId();        
        String nombre_archivo=System.getProperty("file.separator")+carpeta+ System.getProperty("file.separator")+opcion+sessionId;            
        String archivo_importar =((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getRealPath("/")+nombre_archivo;
                
        try{    
            if(content_type!=null && upload_file !=null){                
                InputStream inputStream = upload_file.getInputstream();                
                if (content_type.equals("application/pdf")){           
                  archivo_importar = archivo_importar + ".pdf";
                  nombre_archivo=nombre_archivo+ ".pdf";
                }
                else{
                    if (content_type.equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") ){                
                        archivo_importar = archivo_importar + ".xlsx";
                        nombre_archivo=nombre_archivo+ ".xlsx";
                    }
                    else{
                        if (content_type.equals("application/vnd.ms-excel") ){                
                            archivo_importar = archivo_importar + ".xls";
                            nombre_archivo=nombre_archivo+ ".xls";
                        }                   
                        else{
                             if (content_type.equals("application/vnd.openxmlformats-officedocument.wordprocessingml.document") ){                
                               archivo_importar = archivo_importar + ".docx";  
                                nombre_archivo=nombre_archivo+ ".docx";
                             }
                             else{
                                 if (content_type.equals("application/msword") ){                
                                    archivo_importar = archivo_importar + ".doc";     
                                    nombre_archivo=nombre_archivo+ ".doc";
                                 }
                                 else{
                                        if(content_type.equals("image/png") || content_type.equals("image/jpg") || 
                                                content_type.equals("image/gif")){                            
                                            ext=content_type.substring(content_type.length()-3);
                                            archivo_importar = archivo_importar + "." + ext;  
                                            nombre_archivo=nombre_archivo+ "." + ext;  
                                         }
                                         else{
                                            if(content_type.equals("image/jpeg")){
                                                ext=content_type.substring(content_type.length()-4);
                                                archivo_importar = archivo_importar + "." + ext; 
                                                 nombre_archivo=nombre_archivo+ "." + ext;  
                                            }
                                            else{
                                                if(content_type.equals("image/x-png") || content_type.equals("image/pjpeg")){
                                                    ext=content_type.substring(content_type.length()-5);
                                                    archivo_importar = archivo_importar + "." + ext;   
                                                     nombre_archivo=nombre_archivo+ "." + ext;  
                                                 }                                    
                                            }                                
                                       }


                                 }

                             }                                       
                        }
                    }

                }                 
                File outFile = new File(archivo_importar);
                OutputStream outputStream = new FileOutputStream(outFile);
                int bytesRead;
                byte[] buffer = new byte[1024*1024];
                while ((bytesRead = inputStream.read(buffer)) > 0) {
                    outputStream.write(buffer, 0, bytesRead);
                }
                inputStream.close();
                //outputStream.flush();
                outputStream.close();
                a=true;
            }            
       }catch(Exception error){
            System.out.println("Error en el metodo por: " + error.getMessage());
            error.printStackTrace();
       }
       return nombre_archivo;
    }
    
}
